import { createApp } from 'vue'

// createApp({})
import App from './App.vue'
// ./ 代表的是当前的目录
// 引入一个根组件
import router from './router'

import http from './axios/axios'

// 路由
//

// 引入elementui
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'



// 守卫
router.beforeEach((to, from, next) => {
    // ...
    // alert("即将进入的路径是:"+to.fullPath);
    // alert("即将离开的路径是:"+from.fullPath);
    if(sessionStorage.getItem("user")||to.fullPath=='/login'){
        next();
    }else{
        router.push("/login")
    }

})
const app = createApp(App)

// 定义一个全局的指令
function containsItemWithName(items, name) {
    // 使用数组的some方法，它会在找到符合条件的元素时立即返回true
    return items.some(item => item.authority === name);
}

app.directive("has",{

    //钩子函数
    mounted:(el,binding)=>{
        //

        // 看一下这个值是不是在登录的用户的菜单权限里面
        let item = sessionStorage.getItem("data");
        // 转化成对象
        let data= JSON.parse(item);
       let authorities =   data.authorities;// 当前的用户所拥有的所有的菜单和角色的资源
        //
       let exist=containsItemWithName(authorities,binding.value);


       // 如果角色中有ADMIN 的话就直接展示所有

        // 没有admin的角色  页不拥有这个菜单的权限
        //
        let isAdmin=containsItemWithName(authorities,"ROLE_ADMIN");
        console.log("是否是admin:",isAdmin);
        if(!isAdmin) {
            if (!exist) {
                el.style.display = "none";
            }
        }

    }
})





app.config.globalProperties.$axios=http
// app.use(ElementPlus)
app.use(router)
.use(ElementPlus)
.mount('#app')
